/////////////////////////////////////////////////////////////////////////////
/// @file AvlTree_TestSuite.hpp
/// @ingroup
///
/// File containing the implementation for testing BiTree class implementation
/// Unit under test: AvlTree.hpp
///
/// @see AvlTree_TestSuite.cpp
///
/// @if REVISION_HISTORY_INCLUDED
/// @par Edit History
/// @li [0]   zhalat 19-Aug-2014 Initial revision of file.
/// @endif
///
/// @par &copy;  2014 HalSoft
/////////////////////////////////////////////////////////////////////////////

#ifndef _AVLTREE_TESTSUITE
#define _AVLTREE_TESTSUITE

// SYSTEM INCLUDES
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestSuite.h>
#include <cppunit/Test.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestCaller.h>
#include <cppunit/TestAssert.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestRunner.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/XmlOutputter.h>
#include <iostream>

// C++ PROJECT INCLUDES
#include "AvlTree.hpp"

using namespace tree;

//forward reference

class AvlTree_TestSuite: public CppUnit::TestFixture
{
    private:
        //embedded type
        AvlTree<int> *emb_avl;

    public:
        void setUp()
        {
            emb_avl = new AvlTree<int>();
        }

        AvlTree_TestSuite(){};
        ~AvlTree_TestSuite(){};

        static CppUnit::Test* suite();

        //tests embedded type trees
        void test_RR_rot_emb(void);
        void test_LL_rot_emb(void);
        void test_RL_rot_emb(void);
        void test_LR_rot_emb(void);
        void test_rot_emb(void);
        void test_ins_emb(void);

        void tearDown()
        {
            delete emb_avl;
        }
};

#endif//_AVLTREE_TESTSUITE
